// 类型
enum SettingType {
  // 关闭
  close('close'),
  // 我的
  mine('mine'),
  // 好友
  friend('friend'),
  // 群聊
  group('group'),
  // 删除
  delete('delete'),
  // 消息
  message('message'),
  // 删除消息
  remove('remove'),
  // 清空消息
  clear('clear'),
  ;

  const SettingType(this.value);
  final String value;

  static SettingType init(String value) {
    return SettingType.values.firstWhere(
      (e) => e.value == value,
      orElse: () => SettingType.close,
    );
  }
}

// 对象枚举
enum ChatTalk {
  // 单聊
  friend('friend'),
  // 群聊
  group('group'),
  ;

  const ChatTalk(this.value);
  final String value;

  static ChatTalk init(String value) {
    return ChatTalk.values.firstWhere(
      (e) => e.value == value,
      orElse: () => ChatTalk.friend,
    );
  }
}

// 消息枚举
enum MsgType {
  // 未知
  none('none', '[未知消息]'),
  // 提示
  tips('tips', '[提示消息]'),
  // 文本
  text('text', '[文本消息]'),
  // 图片
  image('image', '[图片消息]'),
  // 视频
  video('video', '[视频消息]'),
  // 声音
  voice('voice', '[声音消息]'),
  // 文件
  file('file', '[文件消息]'),
  // 名片
  card('card', '[名片消息]'),
  ;

  const MsgType(
    this.value,
    this.label,
  );
  final String value;
  final String label;

  static MsgType init(String value) {
    return MsgType.values.firstWhere(
      (e) => e.value == value,
      orElse: () => MsgType.none,
    );
  }
}

// 状态枚举
enum MiddleStatus {
  // 登录
  login('login'),
  // 正常
  normal('normal'),
  ;

  const MiddleStatus(this.value);
  final String value;

  static MiddleStatus init(String value) {
    return MiddleStatus.values.firstWhere(
      (e) => e.value == value,
      orElse: () => MiddleStatus.login,
    );
  }
}
